'use strict';
module.exports = {
	/**
	 * XXXnameXXX
	 * @url client/pay/kh/get_rechargelist 前端调用的url参数地址
	 * data 请求参数
	 * @param {String} params1  参数1
	 */
	main: async (event) => {
		let {
			data = {}, userInfo, util, filterResponse, originalParam
		} = event;
		let {
			customUtil,
			uniID,
			config,
			pubFun,
			vk,
			db,
			_
		} = util;
		let {
			uid,
			appid
		} = data;
		let res = {
			code: 0,
			msg: ""
		};
		// 业务逻辑开始-----------------------------------------------------------

		let get_newuserInfo = await vk.baseDao.findByWhereJson({
			dbName: "uni-id-users",
			whereJson: {
				_id: userInfo._id,
			}
		})

		//通过投放链接邀请来加载充值方案
		if (get_newuserInfo.tfid) {
			let agent_recharges = await vk.baseDao.findByWhereJson({
				dbName: "a_dy_tfurl",
				whereJson: {
					_id: get_newuserInfo.tfid,
				}
			});

			//防止投放链接被删除。先判断是否从数据库中查到结果，有结果才继续执行
			if (agent_recharges) {
				// 如果用户是复充,则加载复充方案
				if (userInfo.is_paid) {
					// 为什么要分两层if？因为有些投放链接没有bind_recharge字段，直接判断 length 会报错
					if (agent_recharges.bind_again_recharge) {
						if (agent_recharges.bind_again_recharge.length > 0) {
							res.recharge = agent_recharges.bind_again_recharge
							console.log("该投放链接已设置复充充值方案，可返回查询结果");
							return res;
						}
					}
				} else {
					// 为什么要分两层if？因为有些投放链接没有bind_first_recharge字段，直接判断 length 会报错
					if (agent_recharges.bind_first_recharge) {
						if (agent_recharges.bind_first_recharge.length > 0) {
							res.recharge = agent_recharges.bind_first_recharge
							console.log("该投放链接已设置首充充值方案，可返回查询结果");
							return res;
						}
					}
				}
			}
		}

		//如果该用户由代理商邀请而来，则加载该代理商的充值方案
		if (get_newuserInfo.invite_code) {
			let agent_recharges = await db.collection('b_recharge').where({
				user_id: get_newuserInfo.invite_code,
				recharge_amount: _.gte(0),
				appid: _.or(_.eq([]), _.in([appid]))
			}).orderBy('sort', 'asc').limit(6).get()

			if (agent_recharges.data.length > 0) {
				res.recharge = agent_recharges.data
				console.log("该代理商已设置充值方案，可返回查询结果");
				return res;
			}
		}

		//如果该用户非代理商邀请，或该代理商未设置充值方案，则拉取admin设置的充值方案
		let admin_recharges = await db.collection('b_recharge').where({
			username: "admin",
			recharge_amount: _.gte(0),
			appid: _.or(_.eq([]), _.in([appid]))
		}).orderBy('sort', 'asc').limit(6).get()
		if (admin_recharges.data.length > 0) {
			res.recharge = admin_recharges.data
			console.log("返回查询结果");
			return res;
		}

		//如果以上都没有获取到方案，则不限制username去拉取数据库里其他方案
		// let all_recharges = await db.collection('b_recharge').where({
		// 	recharge_amount: _.gte(0),
		// 	appid: _.or(_.eq([]), _.in([appid]))
		// }).orderBy('sort', 'asc').get()
		// res.recharge = all_recharges.data

		// 业务逻辑结束-----------------------------------------------------------
		return res;
	}
}